package Escenario;
import java.util.*;

public class EscenarioImpl {
	
	private Carretera carretera;
	private LinkedList<ParCV> llegada;
	
	public EscenarioImpl(){
		carretera = new CarreteraImpl();
		llegada = new LinkedList<ParCV>();
	}
	
	public EscenarioImpl(Carretera c){
		carretera = c;
		llegada = new LinkedList<ParCV>();
	}
	
	public Carretera getCarretera(){
		return carretera;
	}
	
	public LinkedList<ParCV> getLlegada(){
		return llegada;
	}
	
	public void actualizar(){
		
		int numParCV = 0;
		ParCV actualbucle = null;
		int numcarriles = getCarretera().getListaCarriles().size()-1;
		
		for(int i=0; i<numcarriles; i++){
			
			CarrilNormalImpl carrilactual = (CarrilNormalImpl)getCarretera().getListaCarriles().get(i);
			numParCV = carrilactual.getListaParCV().size();
			
			for(int j=0; j<numParCV; j++){
				
				actualbucle = carrilactual.getListaParCV().get(j);
				actualbucle.actualizar();
			}
		}
	}

	public void incrementarTiempo(){
		
		int numParCV = 0;
		ParCV actualbucle = null;
		int numcarriles = getCarretera().getListaCarriles().size()-1;
		
		for(int i=0; i<numcarriles; i++){
			
			CarrilNormalImpl carrilactual = (CarrilNormalImpl)getCarretera().getListaCarriles().get(i); 
			numParCV = carrilactual.getListaParCV().size();
			
			for(int j=0; j<numParCV; j++){
				
				actualbucle = carrilactual.getListaParCV().get(j);
				actualbucle.incrementarTiempo();
			}
		}
	}
	
	public String toString(){
		String s = carretera.toString()+"Orden de LLegada: [";
		for(int i=0;i<llegada.size();i++){
			ParCV it = llegada.get(i);
			if(i==0){
				s = s+it.getMatricula()+"("+(float)it.getTiempo()+" s)";
			}else{
				s = s+" | "+it.getMatricula()+"("+(float)it.getTiempo()+" s)";
			}
		}
		s = s+"]\r\n\r\n";
		return s;
	}
	
}